package com.bjpowernode.aspect.exercise.beans;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
//JDK提供了一个接口InvocationHandler
//代理类框架，目的是为了自动产生更多的代理类的，注意不是代理类本身
public class JDKProxy implements InvocationHandler {
    //目标类【由于代理类没有实现方法接口IA】，则无法明确目标类是哪个类型，则采用Object
    Object target;
    public Object getTarget() {
        return target;
    }
    public void setTarget(Object target) {
        this.target = target;
    }
    //InvocationHandler接口里面的invoke方法，invoke为执行的意识
    //参数：
    //Object proxy：代理类对象
    //Method method：反射中的Method类型，
    //Object[] args：目标类执行方法所需要的参数
    //返回值Object：目标类执行方法返回的值
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        //利用反射执行目标类的方法
        Object o=method.invoke(target,args);
        System.out.println("方法执行完毕..........................");
        return o;
    }
}
